/******************************************************************************
_common.js : 공통 Utility 함수 라이브러리

작성일 : 2001. 08. 14
수정일 :
 *****************************************************************************/

/*----------------------------------------------------------------------------
 *  브라우저 버전체크
 *---------------------------------------------------------------------------*/
var NUM = "0123456789";
var browser = navigator.appName;

var version = parseFloat(navigator.appVersion);
if ((Math.round(parseFloat(navigator.appVersion)*100)) - (parseInt(navigator.appVersion) * 100) == 0) {
	version = version + ".0";

}
if (navigator.appName.substring(0,9) == "Microsoft") {
	msiestart   = (navigator.appVersion.indexOf('(') + 1);
	msieend     = navigator.appVersion.indexOf(')');
	msiestring  = navigator.appVersion.substring(msiestart, msieend);
	msiearray   = msiestring.split(";");
	msieversion = msiearray[1].split(" ");
	platform    = msiearray[2];
	version     = msieversion[2];
	var browser=navigator.appName;
}



/*----------------------------------------------------------------------------
 *  공통 Utility
 *---------------------------------------------------------------------------*/
// init_focus : invocates the focus of the given item
// you can use this function for the "onload" event in body tag
function init_focus(itemnm){

if (itemnm != null) {
	var objs = document.getElementsByName(itemnm);

	// 해당 오브젝트가 발견될 경우 포커스!
	if (objs.length > 0) {
		objs(0).focus();
		return;
	}
}

if (document.forms.length == 0) return;

// 해당 오브젝트가 발견되지 않는 경우 무조건 첫번째 input 항목에 focus를 ㅍ시
var field = document.forms[0];
for (i = 0; i < field.length; i++) {
	if ((field.elements[i].type == "text") ||
		(field.elements[i].type == "textarea") ||
		(field.elements[i].type.toString().charAt(0) == "s")) {
		document.forms[0].elements[i].focus();
		break;
	}
}
}


// input-text에 대해 Return값이 들어올 경우 파라미터로 넘겨준 함수를 호출한다.
// 검색기능 구현시 해당 검색항목 input에 대해 onkeydown=keydown(검색함수명)와 같이 사용
function keydown(reffunc) {
if (window.event.keyCode == 13) {
	window.event.cancelBubble = true
	if (reffunc != null) reffunc(keydown.arguments)
}
}


/*----------------------------------------------------------------------------
 *  메세지(divMessage) 관련 함수
 *---------------------------------------------------------------------------*/
function show_message(msg, mtop) {

	var m = document.all.item("divMessage");

	if (m == null) {
		sHTML = "<div id=divMessage ondblclick=\"divMessage.style.display='none';\" class=waitmsg><div>";
		document.body.insertAdjacentHTML("afterBegin",sHTML);

		m = document.all.divMessage;
	}

	if (msg == "")
		m.innerHTML = "잠시만 기다리십시오..."
	else
		m.innerHTML = msg

	if (m != null) {
		m.style.height = 40
		m.style.width  = 500

		if (mtop == null)
			m.style.top = (document.body.clientHeight - 40) / 2 - 10
		else
			m.style.top = mtop;

		m.style.left  = (document.body.clientWidth - 500) / 2 - 40
		m.style.clip = "rect(auto auto auto auto)";
		m.style.zIndex = 0;
		m.style.display = 'block';
	}
}


function hide_message() {

	var m = document.all.divMessage;

	if (m != null) m.style.display = 'none';
}


/*----------------------------------------------------------------------------
 *  위치 관련 함수
 *---------------------------------------------------------------------------*/
// dialogWindow 중앙으로 옮기기
function dialog_center(w) {

	var x = (screen.width  - parseInt(w.dialogWidth))  / 2;
	var y = (screen.height - parseInt(w.dialogHeight)) / 2;
	w.dialogLeft = x;
	w.dialogTop = y;
}

// Sub-Window 중앙으로 옮기기
function win_center(w) {
	if (opener == null) {
		dialog_center(w);
	}
	else {
		var x = (screen.width  - document.body.offsetWidth) / 2;
		var y = (screen.height - document.body.offsetHeight) / 2;
		w.moveTo (x, y);
	}
}

// 해당 element의 위치로 화면을 스크롤한다.
function scroll_to(tgtElement) {
if (tgtElement == null)   window.scrollTo(0, 0);
else                      window.scrollTo(0, tgtElement.offsetTop);
}


/*----------------------------------------------------------------------------
 *  메뉴보기 이벤트 제어
 *---------------------------------------------------------------------------*/
function menumouse_click() {
if ((window.event.button==2) || (window.event.button==3)) {
	alert("보안상 마우스 오른쪽 버튼은 사용할수 없습니다.");
}
}

function menukey_click() {
if (window.event.keyCode==93) {
	alert("보안상 메뉴보기를 할 수 없습니다.");
}
}

function FnCheckType(s,spc) {
	var i;
	for(i=0; i<s.length; i++) {
		if (spc.indexOf( s.substring(i, i+1)) < 0) {
			return false;
		}
	}
	return true;
}

// 메뉴보기 이벤트를 제어하려면 아래 두 문장에서 //를 제거
//document.onmousedown=menumouse_click
//document.onkeydown=menukey_click


//출력시 검색 및 button이 나오는 부분을 출력되지 않도록 할 경우 및
//출력로그를 남기고 싶은 경우 앞에 //를 제거
//window.onbeforeprint = beforeprint
//window.onafterprint = afterprint

/*----------------------------------------------------------------------------
 *  기타
 *---------------------------------------------------------------------------*/
/*
var debugmsg = '';

function debug (str, flag) {
	if (flag) {
		debugmsg = debugmsg + str+"\n";
	} else {
		debugmsg = str;
	}
	document.all.debugwindow.innerText = debugmsg;
} */

//make by 이재민 주민번호 검사
function CheckResident_number(resident_number1, resident_number2){
	blnResident_number = false
	// 잘못된 생년월일을 검사합니다.
	b_Year = (resident_number2.charAt(0) <= "2") ? "19" : "20"
	/* 2000년도부터 성구별 번호가 바뀌였슴으로 구별수가 2보다 작다면
	1900년도 생이되고 2보다 크다면 2000년도 이상생이 됩니다.
	단 1800년도 생은 계산에서 제외합니다.*/

	b_Year += resident_number1.substr(0, 2)
	// 주민번호의 앞에서 2자리를 이어서 4자리의 생년을 저장합니다.
	b_Month = resident_number1.substr(2, 2) - 1
	// 달을 구합니다. 1을 뺀것은 자바스크립트에서는 1월을 0으로 표기하기 때문입니다.
	b_Date = resident_number1.substr(4, 2)
	b_sum = new Date(b_Year, b_Month, b_Date)
	if ( b_sum.getYear() % 100 != resident_number1.substr(0, 2) || b_sum.getMonth() != b_Month || b_sum.getDate() != b_Date) {
	return blnResident_number
	// 생년월일의 타당성을 검사하여 거짓이 있을시 에러메세지를 나타냄
	}

	total = 0
	temp = new Array(13)
	for(i=1; i<=6; i++) temp[i] = resident_number1.charAt(i-1)
	for(i=7; i<=13; i++) temp[i] = resident_number2.charAt(i-7)
	for(i=1; i<=12; i++) {
	k = i + 1
	if(k >= 10) k = k % 10 + 2
	/* 각 수와 곱할 수를 뽑아냅니다. 곱수가 만일 10보다 크거나 같다면
	계산식에 의해 2로 다시 시작하게 됩니다. */
	total = total + (temp[i] * k)
	// 각 자리수와 계산수를 곱한값을 변수 total에 누적합산시킵니다.
	}

	last_num = (11- (total % 11)) % 10
	// 마지막 계산식을 변수 last_num에 대입합니다.
	if(last_num == temp[13]) blnResident_number = true
	// laster_num이 주민번호의마지막수와 같은면 참을 틀리면 거짓을 반환합니다.
	else blnResident_number = false
	return blnResident_number
}
//make by 이재민 사업자등록번호 검사
function CheckBusiness_Number(businessNo){
	if (businessNo.length == 10) {

		a  	= businessNo.charAt(0);
		b  	= businessNo.charAt(1);
		c  	= businessNo.charAt(2);
		d  	= businessNo.charAt(3);
		e  	= businessNo.charAt(4);
		f  	= businessNo.charAt(5);
		g  	= businessNo.charAt(6);
		h  	= businessNo.charAt(7);
		i  	= businessNo.charAt(8);
		Osub 	= businessNo.charAt(9);

		suma = a*1 + b*3 + c*7 + d*1 + e*3 + f*7 + g*1 + h*3;
		sumb = (i*5) %10;
		sumc = parseInt((i*5) / 10,10);
		sumd = sumb + sumc;
		sume = suma + sumd;
		sumf = a + b + c + d + e + f + g + h + i
		k = sume % 10;
		Modvalue = 10 - k;
		LastVal = Modvalue % 10;

		if (sumf == 0) {
			return false;
		}

	} else {
		return false;
	}

	if ( Osub == LastVal ) {
		return true;
	} else {
		return false;
	}
}

// 달력검색
function getCalender(iter,form_name,text_name,text_col_code,text_format, year, month, day)
{
	window.open('/common/calendar/calendar.jsp?iter='+iter+'&form_name='+form_name+'&text_name='+text_name+'&text_col_code='+text_col_code+'&text_format='+text_format+'&this_year='+year+'&this_month='+month+'&this_day='+day, "calendar", "width=210,height=200,status=no,resizable=no,top=250,left=400");
	//vWinCal.opener = self;
}

function open_tx_error(tx_id, work_group) {
	var url = "/common/interface/deploy_tx_popup.jsp?tx_id=" + tx_id + "&work_group=" + work_group;
	var status = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=500,height=400,left=20,top=20";
	window.open(url, "pop_tx_error", status);
}
//window.document.oncontextmenu = new Function("return false");



//-------------------------------------------------------------------
// below added by 정영우
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// 팝업윈도 오픈
// scroll 안주면 스크롤없음, posX/posY 안주면 화면 가운데 오픈
//-------------------------------------------------------------------
function openPopup(winName, url, width, height, scroll, posX, posY, statusbar, resizable) {
	if (posX==null) posX = (screen.width - width) / 2;
	if (posY==null) posY = (screen.height - height) / 2;
	if (scroll==null) scroll = "no";
	if (statusbar==null) statusbar = "no";
	if (resizable==null) resizable = "no";
	var newWin = window.open(url, winName, "width="+ width +",height="+ height +",top="+ posY +",left="+ posX +",scrollbars="+ scroll +",resizable="+ scroll +",channelmode=0,directories=0,fullscreen=0,location=0,menubar=0,status="+ statusbar +",titlebar=0,toolbar=0");
	newWin.focus();
	return newWin;
}

//-------------------------------------------------------------------
// 팝업윈도 오픈(form을 post방식으로 submit)
// scroll 안주면 스크롤없음, posX/posY 안주면 화면 가운데 오픈
//-------------------------------------------------------------------
function openPopupSumit(form, winName, url, width, height, scroll, posX, posY, statusbar, resizable) {
	var newWin = openPopup(winName, "", width, height, scroll, posX, posY, statusbar, resizable);
	if (newWin!=null) {
		form.target = winName;
		form.action = url;
		form.submit();
	}
	newWin.focus();
	return newWin;
}

//-------------------------------------------------------------------
//
// 파일 업로드 제한 확장자 체크
//-------------------------------------------------------------------
function UploadLimitFile(){

		//file form 추출
		var field = document.forms[0];
		var arrNum = 0;

		for (i = 0; i < field.length; i++) {
			if ((field.elements[i].type == "file" || field.elements[i].type == "FILE") ) {
				arrNum++;
			}
		}

		//파일폼에서 물리파일 명 추출 저장
		fileList = new Array(arrNum);
		for (i = 0; i < field.length; i++) {
			if ((field.elements[i].type == "file") ) {
				fileList[i] = document.forms[0].elements[i].value;
			}
		}

		//업로드제한 확장자.
		extArray = new Array(".asp", ".php", ".jsp", ".cgi", ".js", ".inc", ".html", ".htm", ".phtml", ".php3", ".cer", ".sh");

		for (var i = 0; i < fileList.length; i++) {
			file = fileList[i];

			if(file == "" || file == null) ;
			else {
				while (file.indexOf("\\") != -1){
					file = file.slice(file.indexOf("\\") + 1);
					//alert(file);
					ext = file.slice(file.indexOf(".")).toLowerCase();
					//alert(ext);
					for (var k = 0; k < extArray.length; k++){
						if (extArray[k] == ext){
							alert("asp, php, jsp, cgi, js, inc, html, htm, phtml, php3, cer, sh \n위 확장자의 파일은 업로드 할 수 없습니다.");
							return false;
						}
					}
				}
			}
		}
		return true;
	}

//-------------------------------------------------------------------
// 기간 날짜 체크
// 두 날짜의 기간을 계산하여 특정기간 값과 비교하여 크면 ALERT 창과 false 를 반환
// 두 날짜의 기간을 계산하여 특정기간 값과 비교하여 작으면 true 반환
// date1 : YYYY/MM/DD ( YYYY-MM-DD )
// date2 : YYYY/MM/DD ( YYYY-MM-DD )
// period : "특정기간" (null) - null 인 경우 default 기간 값은 "31" 임.
// parseInt 부분 수정 : 20070713(Hyung-seok Oh)
//-------------------------------------------------------------------
function  searchPeriodCheck(date1 , date2, period){

var year = "";
var month= "";
var day  = "";

if(date1.length == 10){

		year 		= date1.substr(0,4);
	month 	= date1.charAt(5)+""+date1.charAt(6);
	day 		= date1.substr(8,10);
	var A=new Date(parseInt(year, 10),parseInt(month, 10)-1, parseInt(day, 10));

}
if(date2.length == 10){
	year 		= date2.substr(0,4);
	month 	= date2.charAt(5)+""+date2.charAt(6);
	day 		= date2.substr(8,10);
	var B=new Date(parseInt(year, 10),parseInt(month, 10)-1, parseInt(day, 10)+1);
}

if(period == null) period = "183";
var minusValue = Math.floor(B.valueOf()/(24*60*60*1000)- A.valueOf()/(24*60*60*1000))
// alert(minusValue);

if( parseInt(period, 10) < minusValue ) {
		alert("검색 최대 기간은 " + period + "일 입니다.");
		return false;
}
return true;
}

//-------------------------------------------------------------------
// 검색조건 부분의 sql 문에 포함될수있는 단어를 체크
//-------------------------------------------------------------------
function checkSqlInjection(data){
	data=data.toLowerCase();
	var checkStr = new Array("\'","\"","\\","/","\;",":","<",">","=","%","union ","select ","insert ","delete ","update ","drop "," or "," and ","--", "create ");
	//alert(data);
	if(data == "") return true;
	else {
		for(var i=0; i<checkStr.length; i++)  {
			dec = data.indexOf(checkStr[i]);

			if(dec>-1) {
				alert("검색어에 "+checkStr[i]+" 문자는 사용할수 없습니다.");
				return false;
			}
		}
		return true;
	}
}
//-------------------------------------------------------------------
// 입력문자 부분의 sql 문에 포함될수있는 단어를 체크
// 입력문자 부분의 html 문에 포함될수있는 단어를 체크
//-------------------------------------------------------------------
function checkSqlandHtmlInjection(data){
	data=data.toLowerCase();
	var checkStr = new Array("session","cookie","alert","\'","\"","\\","/","\;",":","<",">","=","%","union ","select ","insert ","delete ","update ","drop "," or "," and ","--","create ");
	//alert(data);
	if(data == "") return true;
	else {
		for(var i=0; i<checkStr.length; i++)  {
			dec = data.indexOf(checkStr[i]);

			if(dec>-1) {
				alert("입력시  "+checkStr[i]+" 문자는 사용할수 없습니다.");
				return false;
			}
		}
		return true;
	}
}


//img over/out
function imageOver(imgs) {
	imgs.src = imgs.src.replace("off.gif", "on.gif");
}
function imageOut(imgs) {
	imgs.src = imgs.src.replace("on.gif", "off.gif");
}




//-------------------------------------------------------------------
// 특수문자를 태그로 변환  (VOD 정액제 임선택)
//-------------------------------------------------------------------
function replaceTag(data) {
	
	if(data == "") return "";
	else {
		
		data = data.replace(/&lt;/gi, "<");
		data = data.replace(/&gt;/gi, ">");
		data = data.replace(/&#039;/gi, "'");
		
		return data;
	}

}



//-->
